const Controller = require("egg").Controller;
const fs = require("fs");
const path = require("path");

class FileController extends Controller {
  async upload() {
    const { ctx } = this;
    // 需要前往 config/config.default.js 设置 config.multipart 的 mode 属性为 file
    const file = ctx.request.files[0];
    // 声明存放资源的路径
    let uploadDir = "";
    try {
      // ctx.request.files[0] 表示获取第一个文件，若前端上传多个文件则可以遍历这个数组对象
      const f = fs.readFileSync(file.filepath);
      const date = Date.now(); // 毫秒数
      // 生成文件名
      uploadDir =
        this.config.uploadDir + `file_${date}${path.extname(file.filename)}`;
      const api = "http://127.0.0.1:7001/";
      const file_url = api + uploadDir;
      // 写入文件夹
      fs.writeFileSync(uploadDir, f);
      // 返回上传成功的信息
      ctx.apiSuc("上传成功", file_url);
    } catch (err) {
      console.log("error", err);
      // 清除临时文件
      ctx.cleanupRequestFiles();
    }
  }
}

module.exports = FileController;
